The basic technique for implementing journal abbreviations is a function containing a big list of nested if$ statements with each if$ corresponding to a pair of full journal names and their corresponding abbreviation. Here's an example of a function that abbreviates two journal names. Notice that for each long journal name there may be multiple versions based on what the input field may be in your .bib file. For example, \& and and are both possible in the first journal name, and IPA, {IPA}, and International Phonetic Association are possible for the second journal name.
This function must appear before any function that calls it, so it must precede both the article function and the format.article.crossref function.
FUNCTION { journal.abbrev } {
journal "Natural Language and Linguistic Theory" = { "NLLT" }
{ journal "Natural Language \& Linguistic Theory" = { "NLLT" }
{ journal "Journal of the International Phonetic Association" = { "Jour. IPA" }
{ journal "Journal of the {IPA}" = { "Jour. IPA" }
{ journal "Journal of the IPA" = { "Jour. IPA" }
{ journal } if$ } if$ } if$ } if$} if$}
Now we use this function to pass to the article function for the journal title formatting (the following adapted from the alpha.bst which is your base) instead of just passing journal.
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
crossref missing$
{ journal.abbrev emphasize "journal" output.check
format.vol.num.pages output
format.date "year" output.check
}
{ format.article.crossref output.nonnull
format.pages output
}
if$
new.block
note output
fin.entry
}
Since this style oddly also allows crossref links to articles you also need to change that function:
FUNCTION {format.article.crossref}
{ key empty$
{ journal empty$
{ "need key or journal for " cite$ * " to crossref " * crossref *
warning$
""
}
{ "In {\em " journal.abbrev * "\/}" * }
if$
}
{ "In " key * }
if$
" \cite{" * crossref * "}" *
}
To remove the , that appears after the journal title requires some extra work.
First we need to add an extra flag for the state of being after a journal title, we first add this to the list of integer variables:
INTEGERS { output.state before.all mid.sentence after.sentence after.block after.journal }
then assign it a value:
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.sentence :=
#3 'after.block :=
#4 'after.journal :=
}
Now we modify the output.nonnull function to check for after.journal:
FUNCTION {output.nonnull}
{ 's :=
output.state after.journal =
{" " * write$ }
{
output.state mid.sentence =
{ ", " * write$ }
{ output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
{ output.state before.all =
'write$
{ add.period$ " " * write$ }
if$
}
if$
mid.sentence 'output.state :=
}
if$
}
if$
s
}
Finally we change the article function to set the state to after.journal.
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
crossref missing$
{ after.journal 'output.state :=
journal.abbrev emphasize "journal" output.check
format.vol.num.pages output
format.date "year" output.check
}
{ format.article.crossref output.nonnull
format.pages output
}
if$
new.block
note output
fin.entry
}
Sample document (the modified .bst file I've named alpha-abbrv.bst).
\documentclass{article}
\begin{filecontents}{\jobname.bib}
@article{Boeckx2001scope,
Author = {Boeckx, Cedric},
Journal = {Natural Language and Linguistic Theory},
Number = {3},
Pages = {503--548},
Title = {Scope reconstruction and {A}-movement},
Volume = {19},
Year = {2001}}
@article{MayrDavies2011,
Author = {Mayr, Robert and Davies, Hannah},
Journal = {Journal of the International Phonetic Association},
Number = {1},
Pages = {1--25},
Title = {A cross-dialectal acoustic study of the monophthongs and diphthongs of {Welsh}},
Volume = {41},
Year = {2011}}
@article{AounChoueiri2000,
Author = {Joseph Aoun and Lisa Choueiri},
Journal = {Natural Language & Linguistic Theory},
Pages = {1--39},
Title = {Epithets},
Volume = {18},
Year = {2000}}
\end{filecontents}
\bibliographystyle{alpha-abbrv}
\begin{document}
\cite{MayrDavies2011,AounChoueiri2000,Boeckx2001scope}
\bibliography{\jobname}
\end{document}

journal.abbrevfunction which is basically one big set of nestedif$statements. See e.g. theACM-Reference-Format.bstfor an example. – Alan Munn Jun 22 '20 at 22:35.bibfile to expand to fuller (possibly abbreviated) names. This question asks how to abbreviate long names themselves. – Alan Munn Jun 24 '20 at 16:25